# 日志级别设置示例

import logging
from app.core.logging import logger, set_module_log_level


def example_module_level_logging():
    """
    展示如何设置特定模块的日志级别
    """
    # 1. 在应用启动时设置特定模块的日志级别
    # 这种方式适合在应用初始化时一次性设置
    set_module_log_level("app.api", "INFO")  # 将API模块设置为INFO级别
    set_module_log_level("app.db", "WARNING")  # 将数据库模块设置为WARNING级别
    
    # 2. 也可以使用logging模块的常量
    set_module_log_level("app.services", logging.DEBUG)  # 将服务模块设置为DEBUG级别
    
    # 3. 动态调整日志级别（例如在运行时根据配置或需求调整）
    # 假设我们需要临时提高某个模块的日志级别来调试问题
    logger.info("临时提高app.auth模块的日志级别以调试认证问题")
    set_module_log_level("app.auth", "DEBUG")
    
    # 4. 在问题解决后，可以将日志级别恢复
    logger.info("问题已解决，恢复app.auth模块的日志级别")
    set_module_log_level("app.auth", "INFO")
    
    # 5. 获取特定模块的logger并使用
    api_logger = logging.getLogger("app.api")
    api_logger.debug("这条DEBUG消息在app.api模块中不会显示，因为级别设置为INFO")
    api_logger.info("这条INFO消息在app.api模块中会显示")
    
    db_logger = logging.getLogger("app.db")
    db_logger.info("这条INFO消息在app.db模块中不会显示，因为级别设置为WARNING")
    db_logger.warning("这条WARNING消息在app.db模块中会显示")


if __name__ == "__main__":
    # 可以直接运行此文件来测试模块级别的日志设置
    example_module_level_logging()